package com.delio.client.produccion.ordenproducciones;

import java.util.ArrayList;
import java.util.List;

import com.delio.client.idioma.DelioConstants;
import com.delio.client.produccion.detalleordenproducciones.DetalleOrdenProducciones;
import com.delio.client.produccion.valesalidas.InsumosProduccionForm;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.SelectionMode;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.HiddenField;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
import com.extjs.gxt.ui.client.widget.grid.CheckBoxSelectionModel;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.filters.GridFilters;
import com.extjs.gxt.ui.client.widget.grid.filters.StringFilter;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
 

public class SearchOrdenProduccionIPForm extends Dialog{

	private DelioConstants x = GWT.create(DelioConstants.class);
	ToolBar toolBar,toolBar1;
	ContentPanel cpi,cpg;
	BorderLayoutData nor,c,cen,cg;
	public Integer iddetpedido,idartdetallepedido;
	HiddenField<String> id,idf;
	Integer idartf,idprioridad,idreceta;//,ideop
	private BeanModel selectedModel;
	ModelData selectedModel1;
	Grid<BeanModel> grid;
	EditorGrid<ModelData> grid1;
	Menu contextMenu,contMenuDP;
	MenuItem insert,miDP;
	Button btnEnviar;
	NumberField txtcantidadusada; 
	String opcodigo;
	public static InsumosProduccionForm ipf;
	
	public SearchOrdenProduccionIPForm(){
		 setBodyBorder(false);  
		 setHeading("Orden Producciones");  
		 setWidth(850);  
		 setHeight(550);
		 setIconStyle("images/icons/search_lupa.png");
		 setModal(true);
		 
		 btnEnviar = new Button("Enviar");
		 btnEnviar.addSelectionListener(new SelectionListener<ButtonEvent>(){
		  public void componentSelected(ButtonEvent ce){
		    if(validarIds()){  
		      ipf.ipf_idordenproduccion = DetalleOrdenProducciones.ordenproduccion_id;
		      ipf.ordenproduccion.setValue(opcodigo);
		      hide();
			 }
		    }
		  });
		 
		 setButtons("");
		 addButton(btnEnviar);
	     setFrame(true);
		 
		setHeaderVisible(true);
		BorderLayout layout = new BorderLayout();
		setLayout(layout);
	     
		OrdenProducciones.getPaginate();
		DetalleOrdenProducciones.getPaginate();
       	//SearchPedidoOPForm.opf_concatPDP = OrdenProduccionForm.this;
	    
     	nor  = new BorderLayoutData(LayoutRegion.NORTH,300);
		nor.setMargins(new Margins(0,3,3,3));
		 
		cpi = new ContentPanel();
		cpi.setHeaderVisible(false);
		cpi.setLayout(new BorderLayout());
		  
		c = new BorderLayoutData(LayoutRegion.CENTER);
		 		    
		cen   = new BorderLayoutData(LayoutRegion.CENTER);
		cen.setMargins(new Margins(3));
		    
		cpg = new ContentPanel();
		cpg.setHeading("Listado de Insumos de Orden de Produccion");
		cpg.setIconStyle("images/icons/table.png");
		cpg.setLayout(new BorderLayout());
			
	 	cg = new BorderLayoutData(LayoutRegion.CENTER,100);
		    
	    final PagingToolBar toolBarPag = new PagingToolBar(10);
        toolBarPag.bind(OrdenProducciones.loader);
        
        List<ColumnConfig> conf = new ArrayList<ColumnConfig>();
        CheckBoxSelectionModel<BeanModel> sm = new CheckBoxSelectionModel<BeanModel>();
    
        conf.add(sm.getColumn()); 
        ColumnConfig col  = new ColumnConfig("codigo",x.codigo(),100);
	    conf.add(col);
	    col  = new ColumnConfig("fecha",x.fecha(),100);
	    conf.add(col);
	    col  = new ColumnConfig("estadoop",x.estado(),100);
	    conf.add(col);
	    col  = new ColumnConfig("nombre",x.detallepedido(),100);
	    conf.add(col);
	    col  = new ColumnConfig("artcodigo",x.receta(),100);
	    conf.add(col);
	    col  = new ColumnConfig("artdescripcion",x.descripcion(),100);
	    conf.add(col);
	    col  = new ColumnConfig("cantidad",x.cantidad(),100);
	    conf.add(col);
	    col  = new ColumnConfig("prdescripcion",x.prioridad(),100);
	    conf.add(col);
	    col  = new ColumnConfig("comentario",x.comentario(),100);
	    conf.add(col);
	    
	    final ColumnModel cm = new ColumnModel(conf);
	    
	    grid = new Grid<BeanModel>(OrdenProducciones.store, cm);  
        grid.addListener(Events.Attach, new Listener<GridEvent<BeanModel>>() {  
          public void handleEvent(GridEvent<BeanModel> be) {  
        	  OrdenProducciones.loader.load(0, 10);  
          }  
        }); 
        sm.setSelectionMode(SelectionMode.SINGLE);
        grid.setSelectionModel(sm);
        grid.getSelectionModel().addListener(Events.SelectionChange,
           new Listener<SelectionChangedEvent<BeanModel>>() {
			@Override
			public void handleEvent(SelectionChangedEvent<BeanModel> be) {		
    		   if(be.getSelection().size() == 1) {
	             selectedModel = be.getSelectedItem();
	             DetalleOrdenProducciones.ordenproduccion_id = Integer.parseInt(selectedModel.get("id").toString());
	             opcodigo = selectedModel.get("codigo").toString();
	             System.out.println("opcodigo"+opcodigo);
		         DetalleOrdenProducciones.loader.load();
	           }
    		   if(be.getSelection().size()==0){
    			 DetalleOrdenProducciones.store.removeAll();
               }
			}
          });
        
        grid.setLoadMask(true);  
        grid.setBorders(true);       
        GridFilters filters = new GridFilters();
        StringFilter codigoFilter = new StringFilter("codgio");        
        StringFilter fechaFilter = new StringFilter("fecha");
        StringFilter estadoopFilter = new StringFilter("estadoop");
        StringFilter nombreFilter = new StringFilter("nombre");
        StringFilter cantidadFilter = new StringFilter("cantidad");
        StringFilter comentarioFilter = new StringFilter("comentario");
        StringFilter recetaFilter = new StringFilter("receta");
        StringFilter prioridadFilter = new StringFilter("prdescripcion");
          
        filters.addFilter(codigoFilter);        
        filters.addFilter(fechaFilter);        
        filters.addFilter(estadoopFilter);        
        filters.addFilter(nombreFilter);        
        filters.addFilter(cantidadFilter);
        filters.addFilter(comentarioFilter);
        filters.addFilter(recetaFilter);
        filters.addFilter(prioridadFilter);
         
        grid.addPlugin(filters);                
        grid.addPlugin(sm);

        final PagingToolBar toolBarPag1 = new PagingToolBar(10);
        toolBarPag1.bind(DetalleOrdenProducciones.loader);

        List<ColumnConfig> conf1 = new ArrayList<ColumnConfig>();
        //CheckBoxSelectionModel<ModelData> sm1 = new CheckBoxSelectionModel<ModelData>();
        //conf1.add(sm1.getColumn()); 
        //ColumnConfig col1  = new ColumnConfig("artcodigo",x.codigo(),100);
	    //conf1.add(col1);
	    ColumnConfig col1  = new ColumnConfig("artdescripcion",x.articulos(),100);
	    conf1.add(col1);
	    col1  = new ColumnConfig("cantidad",x.cantidad(),100);
	    conf1.add(col1);
	    
	    col1 = new ColumnConfig("cantidadusada",x.cantidadusadaarticulos(),100);
	    
	    txtcantidadusada = new NumberField();  
	    txtcantidadusada.setAllowBlank(false);  
	    col1.setEditor(new CellEditor(txtcantidadusada));  
	    conf1.add(col1);
	    
	    final ColumnModel cm1 = new ColumnModel(conf1);
	    grid1 = new EditorGrid<ModelData>(DetalleOrdenProducciones.store, cm1);  
        grid1.addListener(Events.Attach, new Listener<GridEvent<BeanModel>>() {  
          public void handleEvent(GridEvent<BeanModel> be) {  
        	  DetalleOrdenProducciones.loader.load(0, 10);  
          }  
        }); 
       // sm1.setSelectionMode(SelectionMode.SINGLE);
       // grid1.setSelectionModel(sm1);
        grid1.getSelectionModel().addListener(Events.SelectionChange,
           new Listener<SelectionChangedEvent<ModelData>>() {
			@Override
			public void handleEvent(SelectionChangedEvent<ModelData> be) {		
			   if(be.getSelection().size()==1){
                   selectedModel1 = be.getSelectedItem();
		           DetalleOrdenProducciones.detalleordenproduccion_id = selectedModel1.get("id");
		          }
			}
          });
        
        grid1.setLoadMask(true);  
        grid1.setBorders(true);       
        GridFilters filt    = new GridFilters();
        StringFilter artcod  = new StringFilter("artcodigo");        
        StringFilter artdes  = new StringFilter("artdescripcion");        
        StringFilter cant = new StringFilter("cantidad");
        StringFilter cantusa  = new StringFilter("cantidadusada");

        filt.addFilter(artcod);  
        filt.addFilter(artdes);        
        filt.addFilter(cant);        
        filt.addFilter(cantusa);        

         
        grid1.addPlugin(filt);                
     //   grid1.addPlugin(sm1);

        cpi.add(grid,c);
		cpi.setBottomComponent(toolBarPag);		
   
		cpg.add(grid1,cg);
	    cpg.setBottomComponent(toolBarPag1);
	
		add(cpi,nor);
		add(cpg,cen);
		
	}

	public boolean validarIds(){
      boolean var=false;
	  if(DetalleOrdenProducciones.ordenproduccion_id!=null)
		var=true;
		
	 return var;	
	}
	
       
}